$(function (){
    doGetNotices();
    $(".pagination").on("click",".pre,.next,.jump",doJumpToPage);
})

function doGetNotices(){
    //定义请求参数
    let pageCurrent=localStorage.getItem("pageCurrent");
    if(pageCurrent=="" || pageCurrent=="NaN")pageCurrent=1;
    let params={pageCurrent:pageCurrent};
    let title = $("#Noticeform-find input[ name=title]").val();
    params.title=title;
    //定义请求url
    let url="http://localhost/notice/";
    //基于jQuery中的ajax函数向服务端发送异步请求
    $.ajax({
        url: url,
        data: params,
        success(result){//服务端没有抛出异常到客户端时执行此函数，result为服务端响应结果
            //console.log(result)
            //debugger
            doHandleQueryResponseResult(result);
        }
    })
}

function doHandleQueryResponseResult(result){
    if (result.state==1){
        doHandleQueryOk(result);
    }else {
        doHandleQueryError();
    }
}

//处理正确的条件查询结果
function doHandleQueryOk(result){
    //设置tbody中的内容
    doSetTableBodyRows(result.data.list);
    let records=result.data.list;
    doSetTableBodyRows(records);
    //设置分页信息(初始化分页数据)
    if(records.length>0){
        doSetPagination(result);
    }
}

//设置tbody中的公告或通知信息
function doSetTableBodyRows(records){
    //1.获取tbody对象，并清空原有内容
    let tBody=$("tbody");
    tBody.empty();
    //2.迭代records中的内容，并追加到tbody中
    if(records.length==0){
        doHandleQueryError();
        return;
    }
    records.forEach((item,i)=>{tBody.append(doCreateRow(item,i))})
}

//基于分页按钮点击事件，进行分页查询
function doJumpToPage(){
    //1.获取被点击对象的class属性值
    let cls = $(this).prop("class");
    //2.基于被点击对象的class属性值修改当前页码值
    let pageCurrent=parseInt(localStorage.getItem("pageCurrent"));//当前页码值
    let pageCount=parseInt(localStorage.getItem("pageCount"));//总页数
    if (cls=="pre"&&pageCurrent>1){
        pageCurrent--;
    }else if (cls=="next"&&pageCurrent<pageCount){
        pageCurrent++;
    }else if (cls=="jump"){
        debugger
        let pageC=parseInt($("form input[name=pageCurrent]").val());
        if (pageC<1 || pageC>pageCount){
            alert("页码值不合法");
            $("form input[name=pageCurrent]").val("");//回到初始状态
            return;
        }
        pageCurrent=pageC;
        $("form input[name=pageCurrent]").val("");
    }else {
        return;
    }
    console.log("pageCurrent",pageCurrent)
    //将修改以后的页码值，存储起来
    localStorage.setItem("pageCurrent",pageCurrent);
    //3.基于新的页码值重新执行查询
    doGetNotices();
}

//初始化分页信息
function doSetPagination(result){
    //初始化页面上的分页数据
    let pageCurrent=result.data.pageNum;//当前页码值
    let pageCount=result.data.pages;//总页数
    $(".percent").html(pageCurrent+"/"+pageCount);
    //将当前页码值存储到浏览器的localStorage对象中，便于其它方法后续应用
    localStorage.setItem("pageCurrent",pageCurrent);
    localStorage.setItem("pageCount",pageCount);
}
//Error处理
function doHandleQueryError(){
    let tBody=$("table>tbody");
    let len=$("table>thead>tr>th").length;
    let tr=`<tr><td colspan="${len}">没有找到对应记录......</td></tr>`
    tBody.html(tr);
    $(".percent").html("0/0");
}
//查询
function doQueryNotices(){
    //1.初始化当前页码值
    localStorage.setItem("pageCurrent",1);
    //2.基于条件查询
    doGetNotices();
}

//删除
function doDeleteById(id){
    //1.定义请求参数
    //2，定义请求url
    let url=`http://localhost/notice/${id}`;
    //3.发送异步请求
    $.ajax({
        method:"delete",
        url:url,
        success(result) {
            doHandleDeleteResponseResult(result);
        }
    });
}

//处理删除响应结果
function doHandleDeleteResponseResult(result){
    if (result.state==1){
        doHandleDeleteOk(result.message);
    }else {
        //doHandleDeleteError()
        alert(result.message);
    }
}
function doHandleDeleteOk(msg){
    alert(msg);
    let rows=$("table>tbody>tr").length;
    let pageCurrent=parseInt(localStorage.getItem("pageCurrent"));
    let pageCount=parseInt(localStorage.getItem("pageCount"));
    if (pageCurrent>1&&pageCurrent==pageCount&&rows==1){
        pageCurrent--;
        localStorage.setItem("pageCurrent",pageCurrent);
    }
    doGetNotices();
}

//新增
function doDisplay(){
    //$("#notice-redact").css("display","block");
    //$("#notice-List").css("display","none");
}
//添加通告信息
function doSaveOrUpdate(){
    //1.获取请求参数
    let params={
        id:$("#id").val(),
        type:$("#typeId").val(),
        title:$("#titleId").val(),
        content:$("#contentId").val(),
        status:$("#noticeEditForm input:radio:checked").val(),
        createdUser:$("#Creator").val()
    }
    //2.定义请求url
    let url="http://localhost/notice/";
    //3.发送异步请求
    $.ajax({
        method:params.id?"put":"post",
        url:url,
        data:JSON.stringify(params),//将js对象转换为json字符串
        contentType:"application/json",//向服务端传递的数据类型
        success(result){
            if(result.state==1){
                alert(result.message);
                doGetNotices();
                doRestForm();//重置表单数据
            }else{
                alert(result.message);
            }
        }
    });
}

function doRestForm(){//重置表单数据
    $("#id").val("");
    $(`#noticeEditForm select>option[value=1]`).prop("selected",true)
    $("#titleId").val("");
    $("#contentId").val("");
    $(`#noticeEditForm input[value=0]:radio`).prop("checked",true)
    $("#Creator").val("");
}

//修改
function doSaveOrUpdate(){
//1.获取请求参数
    let params={
        id:$("#id").val(),
        type:$("#typeId").val(),
        title:$("#titleId").val(),
        content:$("#contentId").val(),
        createdUser:$("#Creator").val(),
        status:$("#noticeEditForm input:radio:checked").val()
    }
//2.定义请求url
    let url="http://localhost/notice/";
//3.发送异步请求
    $.ajax({
        method:params.id?"put":"post",
        url:url,
        data:JSON.stringify(params),//将js对象转换为json字符串
        contentType:"application/json",//向服务端传递的数据类型
        success(result){
            if(result.state==1){
                alert(result.message);
                doGetNotices();
                doRestForm();
            }else{
                alert(result.message);
            }
        }
    });
}
function doFindById(id){
    //1.基于id查找通告信息
    let url=`http://localhost/notice/${id}`;
    $.ajax({url:url,success(result){
            if(result.state==1){
                //2.初始化表单数据
                doInitEditForm(result);
            }else{
                alert("可能记录已经被删除");
            }
        }
    })
}
//初始化表单数据
function doInitEditForm(result){//result.data->Notice
    $("#id").val(result.data.id);
    $(`#noticeEditForm select>option[value=${result.data.type}]`).prop("selected",true)
    $("#titleId").val(result.data.title);
    $("#contentId").val(result.data.content);
    $("#Creator").val(result.data.createdUser);
    $(`#noticeEditForm input[value=${result.data.status}]:radio`).prop("checked",true)
}


function doCreateRow(item,i){
    return `<tr>
                <td><input type="checkbox" id="inlineCheckbox1" value="option1"></td>
                <td>${i+1}</td>
                <td>${item.title}</td>
                <td>${item.type=='1'?"通知":"公告"}</td>
                <td>${item.status=='0'?"正常":"关闭"}</td>
                <td>${item.createdUser}</td>
                <td>${item.createdTime}</td>
                <td>
                <button class="btn btn-danger" onclick="doDeleteById(${item.id})">删除</button>
                <button class="btn btn-info" onclick="doFindById(${item.id})">修改</button>
                </td>
            </tr>`
}